核心变更说明:本文基于2018年版全面升级,新增CAP理论现代解读、FLP不可能性原理详解、BASE与最终一致性、事件驱动架构(EDA)、Service Mesh入门、云原生12要素、Kubernetes服务发现等2026年分布式架构核心概念。
学习分布式系统跟学习其它技术非常不一样。分布式系统之所以复杂,就是因为它太容易出错了。这意味着,你要把处理错误的代码当成正常功能的代码来处理。
这是分布式系统新手最容易犯的错误:
记住:在分布式系统中,错误是不可能避免的,我们能做的不是避免错误,而是要把错误的处理当成功能写在代码中。
CAP理论经常被误解。以下是正确的理解:
| 组合 | 含义 | 代表系统 | 适用场景 |
|---|---|---|---|
| CP | 保证一致性和分区容忍 | ZooKeeper、etcd、HBase | 配置中心、协调服务 |
| AP | 保证可用性和分区容忍 | Cassandra、DynamoDB、CouchDB | 内容分发、社交网络 |
| CA | (理论上)单机系统 | 传统RDBMS | 非分布式场景 |
关键洞察:在真实系统中,P是必须选择的(网络分区必然发生),所以实际是在C和A之间做权衡。
Eric Brewer在2012年重新审视了CAP理论,提出以下观点:
| 特性 | ACID(传统) | BASE(分布式) |
|---|---|---|
| 原子性 Atomicity | 全部成功或全部失败 | 允许部分成功 |
| 一致性 Consistency | 强一致 | 最终一致 |
| 隔离性 Isolation | 严格隔离 | 最终隔离 |
| 持久性 Durability | 持久化 | 尽力而为 |
| 基本可用 Basically Available | - | 系统始终可用 |
| 软状态 Soft State | - | 允许中间状态 |
| 最终一致 Eventually Consistent | - | 经过一段时间后一致 |
eBay的经典总结:"在对数据库进行分区后,为了可用性(Availability)牺牲部分一致性(Consistency)可以显著地提升系统的可伸缩性(Scalability)。"
Raft将共识分解为三个相对独立的子问题:
Term 3:
所有节点都是Follower
↓ (election timeout)
Node B 变为Candidate, term=4, 投票给自己
Node B → Node A: RequestVote(term=4)
Node B → Node C: RequestVote(term=4)
Node A: term=4 > term=3, 更新term, 投票给B ✓
Node C: term=4 > term=3, 更新term, 投票给B ✓
↓ Node B获得3票中的2票(包括自己)
Node B 成为Leader!
开始发送AppendEntries心跳...| 方案 | 类型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Consul | DNS + HTTP | 健康检查丰富 | CP倾向 | 中小型集群 |
| etcd | gRPC | 强一致、Watch机制 | 单纯KV存储 | K8s/配置中心 |
| ZooKeeper | ZAB协议 | 成熟稳定 | 重量级 | Hadoop生态 |
| Nacos | HTTP/gRPC | 功能全面(注册+配置) | 较新 | Spring Cloud |
| Eureka | REST | AP可用性高 | 2.0已停止开发 | 旧Spring Cloud |
EDA是现代分布式架构的重要模式:
EDA的优势:
| 书名 | 作者 | 重点 |
|---|---|---|
| 《Designing Data-Intensive Applications》 | Martin Kleppmann | 必读! 数据系统设计圣经 |
| 《Distributed Systems: Principles and Paradigms》 | Tanenbaum & van Steen | 经典教材 |
| 《Distributed Systems for Fun and Profit》 | Mixu | 免费电子书,通俗易懂 |
| 论文 | 主题 | 难度 |
|---|---|---|
| Byzantine Generals Problem | 拜占庭将军问题 | ⭐⭐⭐⭐ |
| CAP Twelve Years Later | CAP理论修正 | ⭐⭐⭐ |
| In Search of an Understandable Consensus Algorithm (Raft) | Raft算法 | ⭐⭐⭐ |
| Dynamo: Amazon's Highly Available Key-Value Store | Dynamo论文 | ⭐⭐⭐ |
下一篇文章我们将探讨分布式架构经典图书和论文——深入Paxos/Raft/Dynamo等经典论文,以及Google/Amazon/Facebook的大规模分布式系统实践经验。